《Python股票量化交易从入门到实践》随书赠送“回测框架”的使用帮助

您所在的位置:网站首页 量化交易从入门到精通 如何构建你的算法交易系统 《Python股票量化交易从入门到实践》随书赠送“回测框架”的使用帮助

《Python股票量化交易从入门到实践》随书赠送“回测框架”的使用帮助

2024-07-14 15:59:16| 来源: 网络整理| 查看: 265

点击:QTYX最新版本使用指南[文字版]

点击:QTYX最新版本使用指南[视频版]

点击: QTYX历史版本更新说明

赠送“回测框架”的目的

为了帮助读者再建立一座从书本知识到实战应用之间的“桥梁”,赠送一个回测小工具。

由书中知识点组合而成,实现了包括选股、行情、回测三个功能。额外使用wxPython封装一层GUI便于操作。 在这里插入图片描述 提供给大家一种“量化交易”为我所用的思路。大家可以以此为基础去搭建适合自己的系统!

回测框架效果展示

回测框架的功能,其实是我自己设定了一个炒股的场景。

我们根据上市公司的一些财务指标,去过滤出我们心仪的股票加入我们的股票池,然后查看股票的行情走势,选出走势较好的几只股,再制定一个择时策略,对这几只股票进行回测,评估择时策略的效果。

条件选股界面

我们把全市场股票的部分财务数据(市盈率、市值、换手率之类的)整合成了一张表,然后通过条件选取过滤出符合要求的股票,点击保存结果后就可以更新到自选股票池中。大家也可以重构这张表,把平时关系的一些财务指标加进来。 在这里插入图片描述

行情分析界面

我们可以点击股票池 显示行情走势,行情参数包括行情起始时间、周期、前复权、后复权、不复权。也可以4幅子图同时比较行情走势。 在这里插入图片描述 在这里插入图片描述

回测评估界面

策略池中注册策略,选择回测参数,比如初始资金、交易规模、滑点、手续费、印花税之类,点击开始回测,主界面可视化回测指标,比如风险和收益,日志中会有更具体的回测结果,比如交易明细、回测幅度、收益率等。 在这里插入图片描述

我录制了一个操作视频,大家可以看一下:点击跳转哔哩哔哩

回测框架文件功能概述 回测工具的下载位置

在群文件夹中下载一个名称“QuantTradeYx_System-v03”的压缩包。

【该版本为V1.0,是随书赠送的。目前有升级的V2.0:可以点击跳转查看】

文件包括: stock_self_pool.json:存储股票池,可参考书中《7.4 注册 JSON 格式自选股票池》的实现。firm_para.json:行情显示页面配置参数,可参考书中《8.5 自定义显示界面框架开发》back_para.json:回测显示页面配置参数,可参考书中《9.1 建立多维度的度量体系》logtrade.txt:存储回测结果的日志文件,可参考书中《9.1 建立多维度的度量体系》token.txt:存储tushare pro的token码,手动把注册的token码存文件中

token码是从tushare官网获取,使用tushare的接口有积分要求

QTYX_ApiData.py:API数据获取接口文件,参考《7.1 如何获取股票行情数据》QTYX_ElementGui.py:GUI相关的定制类 QTYX_MainGui.py:GUI主界面,也是main启动文件QTYX_MultiGraphs.py:行情显示/回测显示接口,可参考书中《8.1 定制可视化接口 》《9.1 建立多维度的度量体系》和《8.5 自定义显示界面框架开发》QTYX_StrategyGath.py:策略文件QTYX_SysFile.py:文件的读取和存储接口 运行条件:

必看本文“安装环境”和“常见问题解决”的内容,可以少走很多弯路。

安装环境

移植程序前,按书中“2.1 快速部署 Python 开发环境”节内容安装开发环境。 新手读者建议和书中的Python版本保持一致。 Python3.7 wxpython 4.0.4 mpl_finance 0.10.0 TA-Lib 0.4.17 numpy 1.15.1 pandas 0.23.4 pandas-datareader 0.7.0 matplotlib 3.1.1 tushare 1.2.51 baostock 0.8.8 statsmodels 0.9.0

注意事项:

需要额外安装GUI库wxPython(Win7环境下安装wxpython4.0.4,原因见“常见问题解决”)。

书中安装部署anaconda和pycharm过程是以macos为例,对于Windows用户可以结合这篇文章参考点击跳转链接。

安装完成后启动主文件QTYX_MainGui.py

TA-Lib安装会麻烦点。具体安装步骤可参考 https://github.com/mrjbq7/ta-lib 网站上介绍。

Mac用户可按照书中的过程一步步来即可!!! Windows用户参考下群里朋友的过程:前往“Python扩展包的非官方Windows二进制文件”,找到对应的wrapper 在这里插入图片描述 选择TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl(win系统64位,python3.7版本,根据自己系统和python版本选择相应的安装包),将下载包放在当前工作路径中,然后在Anaconda Prompt(或windows的cmd)里面输入命令:pip install TA_Lib-0.4.17-cp27-cp27m-win_amd64.whl。

常见问题解决 1. 提示以下错误:

在这里插入图片描述 主要出现在windows环境下,原因是读写的文件要指定编码格式’utf-8’。我是在macos系统上调的,不需要指定编码格式,采用默认的即可。 已在QuantTradeYx_System-v02工程的QTYX_SysFile.py中更改。

with open(filename, 'r', encoding='utf-8') as load_f: 2. 提示以下错误:

在这里插入图片描述 mpl_finance库用于画K线,可指定书中版本安装。

首先删除当前版本 pip uninstall mpl_finance 或者pip uninstall mplfinance

然后指定版本安装pip install mpl_finance==0.10.0,这样避免更多的问题排查。

当然,有能力的朋友可以移植成mplfinance,参考这篇内容:mpl_finance升级至mplfinance!基于股票量化分析工具V2.06的改动!。

3. 提示以下错误:在这里插入图片描述

在这里插入图片描述

在win7环境下wxpython 4.1.0版本和baostock 0.8.8 一同使用时,在baostock的history.py文件的以下代码中报错: 在这里插入图片描述 经测试可以使用wxpython4.0.4版本和baostock 0.8.8共同使用。不过wxpython4.0.4在win7下会出现以下问题:

You probably called setlocale() directly instead of using wxLocale and now there is a mismatch between C/C++ and Windows locale.

解决方法在MainGui文件中添加语句self.locale = wx.Locale(wx.LANGUAGE_ENGLISH),如下所示:

def OnInit(self): self.locale = wx.Locale(wx.LANGUAGE_ENGLISH) self.frame = MainFrame() self.frame.Show() self.frame.Center() self.SetTopWindow(self.frame) return True

win10环境下baostock 0.8.8和wxPython4.1.1 不存在兼容性问题。

也有读者反映以下信息,仅供参考: 在这里插入图片描述 总之建议的版本搭配为: Python3.8+wxpython4.1.1+baostock 0.8.8 + 去掉 self.locale = wx.Locale(wx.LANGUAGE_ENGLISH) Python3.7+wxpython4.0.4+baostock 0.8.8 win10/win7 维持代码语句 self.locale = wx.Locale(wx.LANGUAGE_ENGLISH)

4. 提示以下错误:

在这里插入图片描述 原因为tushare的积分不足,程序中使用了pro.daily_basic()接口,大家可前往官网查看积分获取规则。

如不介意可使用org的一个接口作为选股数据(速度有点慢,也并不稳定),仅需在MainGui文件中更改一行代码即可:

# 组合加入tushare数据 self.ts_data = Tsorg_Backend()

当然,大家消化代码之后可以把自己选股的数据替换到工具中。

5. 提示以下错误:

win7上“回测结果”显示为空 在这里插入图片描述 提示编码格式错误: 在这里插入图片描述 logtrade.txt文件编码变为ANSI。同时QTYX_SysFile.py 中 open 中把encoding 去掉。回测可以正常显示。

6. 提示以下错误:

在这里插入图片描述 如果界面显示比例有问题,需要设置下界面尺寸或者比例参数以适应你的屏幕。

## QTYX_MainGui.py相关代码: class MainFrame(wx.Frame): def __init__(self): # hack to help on dual-screen, need something better XXX - idfah displaySize = wx.DisplaySize() # (1920, 1080) displaySize = 0.85 * displaySize[0], 0.75 * displaySize[1] # call base class constructor wx.Frame.__init__(self, parent=None, title=u'量化软件', size=displaySize, style=wx.DEFAULT_FRAME_STYLE ^ wx.MAXIMIZE_BOX) # size=(1000,600) ##QTYX_ElementGui.py相关代码: class StockPanel(wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent=parent, id=-1) # 分割子图实现代码 self.figure = Figure(figsize=(8, 5)) ## figsize就是改它!!!

最最最重要的是 点击相应按钮才有图像出现!

搭建系统升级

我在知识星球《玩转股票量化交易》中又新增了回测框架的一些功能。感兴趣的读者可以加入星球获取。

【2-1 搭建系统|比Matplotlib更好用的pyecharts打造GUI股票行情分析界面】 在这里插入图片描述在这里插入图片描述 【2-4 搭建系统|行情软件可没有!多股票投资组合用的GUI分析界面-附代码】 在这里插入图片描述 【2-5 搭建系统|多维度下不同股票|周期|除权|复权走势对比界面-附代码】 在这里插入图片描述 【2-17 搭建系统|升级选股工具,使用同花顺F10查看上市公司基本概况!-附代码】在这里插入图片描述 【2-18 搭建系统|本地量化工具集成开源量化框架backtrader操作指南!-附代码】 在这里插入图片描述 【2-19 搭建系统|继承backtrader的本地量化回测平台如何玩转多股轮动策略!-附代码】 在这里插入图片描述 更多更高阶的量化学习内容可以查看这篇目录介绍:

书籍《Python股票量化交易从入门到实践》升级学习——《玩转股票量化交易》

参考资料

很多读者反馈wxPython相关的资料太匮乏了,这里分享两个链接。

wxpython官网使用文档 专栏-如何用wxPython搭建Python量化交易GUI

读者群动态

在移植回测框架的过程中所出现的问题,主要集中在搭建环境这个环节,比如第三方库的版本、Anaconda和Pycharm的安装等等,总体来说大伙的移植都算比较顺利,没什么难度的。

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭